package com.tanhua.dubbo.api;

import com.tanhua.domain.mongo.Comment;
import com.tanhua.domain.mongo.Video;
import com.tanhua.domain.vo.PageResult;

/**
 * @author anshuai
 * @create 2021-02-01 16:04
 */
public interface CommentApi {

    /**
     * 增加操作（点赞、评论、喜欢）
     * @param comment Comment信息对象
     * @return 最新数量（点赞数、评论数、喜欢数）
     */
    long save(Comment comment);

    /**
     * 对评论点赞
     * @param comment Comment信息对象
     * @return 最新点赞数
     */
    long saveComment(Comment comment);

    /**
     * 对视频点赞
     * @param comment Comment对象
     * @return 最新点赞数
     */
    long saveVideo(Comment comment);

    /**
     * 取消操作（取消点赞、取消评论、取消喜欢）
     * @param comment Comment信息对象
     * @return 最新数量（点赞数、评论数、喜欢数）
     */
    long remove(Comment comment);

    /**
     * 评论-取消点赞
     * @param comment Comment信息对象
     * @return 对评论的最新的点赞数
     */
    long removeComment(Comment comment);

    /**
     * 视频-取消点赞
     * @param comment Comment信息对象
     * @return 对视频的最新的点赞数
     */
    long removeVideo(Comment comment);

    /**
     * 分页查询某一动态的文字评论列表
     * @param page 页码
     * @param pagesize 查询几条
     * @param movementId 动态id
     * @return 动态id对应的文字评论列表
     */
    PageResult<Comment> findCommentList(String movementId, int page, int pagesize);

    /**
     * 分页查询针对某一用户的评论列表
     * @param userId 用户id
     * @param commentType 评论类型
     * @param page 页码
     * @param pagesize 每页几条
     */
    PageResult<Comment> findCommentsByUser(Long userId, int commentType, int page, int pagesize);

    /**
     * 查询一条动态的评论
     * @param commentId 评论id
     * @return commentId对应的Comment对象
     */
    Comment findById(String commentId);

}
